import { getToken, setToken, removeToken } from '@/utils/auth'
import { getInfo, getUserPic } from '@/api/user'
// 后面的代码是要自己写的
export default {
  // 放入核心的配置项
  namespaced: true, // 开启命名空间
  state: {
    token: getToken() || '',
    // 用户存储的信息
    userInfo: {}
  },
  mutations: {
    // 这个函数是存储token
    updatatoken(state, token) {
      state.token = token
      // 存储到cookes里面
      setToken(token)
    },
    // 删除token ,删除cook里面的信息
    deltoken(state) {
      state.token = ''

      removeToken()
    },
    // 删除个人的信息
    delUserInfo(state) {
      state.userInfo = {}
    },
    // 存储用户的信息
    setUserInfo(state, info) {
      state.userInfo = info
    }
  },
  actions: {
    // 获取用户的信息
    async getUserInfo(context) {
      try {
        const res = await getInfo()
        console.log(res, '获取的用户的信息')
        const userInfo = await getUserPic(res.data.userId)
        console.log(userInfo, 'app的内容')
        // 使用展开运算符的方式将两个对象合并
        context.commit('setUserInfo', { ...res.data, ...userInfo.data })
      } catch (error) {
        console.log(error)
      }
    },
    // 封装异步代码执行同步里面的代码 可以同时执行多个程序
    login(context) {
      context.commit('delUserInfo')
      context.commit('deltoken')
    }
  },
  getters: {

  }
}
